﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Sige
{
    class Alumno : Persona
    {
        private DateTime fechaDeAlta;
        private bool estado;

        public DateTime FechaDeAlta
        {
            get { return fechaDeAlta; }
            set { fechaDeAlta = value; }
        }

        public bool Estado
        {
            get { return estado; }
            set { estado = value; }
        }

        public bool Insertar()
        {
            bool insert = true;
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = new SqlConnection(datos.getruta());
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            //DEFINO EL COMANDO COMO TEXTO:
            cmd.CommandType = System.Data.CommandType.Text;
            //DEFINO LA SENTENCIA SQL:
            cmd.CommandText = "INSERT alumnos (tipodocumento,documento,fechaalta,estado) values (@tipodocumento, @documento, @fechaalta, @estado)";
            //DEFINO LOS PARÁMETROS:
            cmd.Parameters.AddWithValue("@tipodocumento", this.TipoDocumento);
            cmd.Parameters.AddWithValue("@documento", this.Documento);
            cmd.Parameters.AddWithValue("@fechaalta", this.FechaDeAlta);
            cmd.Parameters.AddWithValue("@estado", this.Estado);
            cmd.Connection = cn;
            //COMIENZA LA EJECUCIÓN DEL COMANDO:
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                insert = false;
            }
            finally
            {
                cn.Close();
            }
            return insert;
        }

        public bool Alumno_Existente(string coddoc, string nrodoc)
        {
            bool existe = false;
            string consulta = "Select * from alumnos where (tipodocumento = '" +
                coddoc + "') and (documento = '" + nrodoc + "')";
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = datos.ObtenerConexion(datos.getruta());
            SqlCommand cmd = new SqlCommand(consulta, cn);
            SqlDataReader dr;
            try
            {
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    existe = true;
                }
            }
            catch
            {
                existe = false;
            }
            finally
            {
                cn.Close();
            }
            return existe;
        }

        public bool Alumno_Activo_Existente(string coddoc, string nrodoc)
        {
            bool existe = false;
            string consulta = "Select * from alumnos where (tipodocumento = '" +
                coddoc + "') and (documento = '" + nrodoc + "') and (estado = 1)";
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = datos.ObtenerConexion(datos.getruta());
            SqlCommand cmd = new SqlCommand(consulta, cn);
            SqlDataReader dr;
            try
            {
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    existe = true;
                }
            }
            catch
            {
                existe = false;
            }
            finally
            {
                cn.Close();
            }
            return existe;
        }
        
        public void ObtenerTablaAlumnoPorDocumento(ref DataTable p, string cod, string doc)
        {
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = new SqlConnection();
            SqlDataAdapter adapt = new SqlDataAdapter();
            cn = datos.ObtenerConexion(datos.getruta());
            adapt = datos.ObtenerAdaptador("Select * from alumnos where (tipodocumento = '" + cod + "') and (documento = '" + doc + "')", cn);
            adapt.Fill(p);
        }

        public void ObtenerTablaAlumnoActivoPorDocumento(ref DataTable p, string cod, string doc)
        {
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = new SqlConnection();
            SqlDataAdapter adapt = new SqlDataAdapter();
            cn = datos.ObtenerConexion(datos.getruta());
            adapt = datos.ObtenerAdaptador("Select * from alumnos where (tipodocumento = '" + cod + "') and (documento = '" + doc + "') and (estado = 1)", cn);
            adapt.Fill(p);
        }
        
        public void ObtenerAlumnoDesdeDatatable(ref Alumno a, DataTable dt)
        {
            a.TipoDocumento = dt.Rows[0][0].ToString();
            a.Documento = dt.Rows[0][1].ToString();
            a.FechaDeAlta = Convert.ToDateTime(dt.Rows[0][2]);
            a.Estado = Convert.ToBoolean(dt.Rows[0][3]);
        }

        public bool Activar()
        {
            bool activar = true;
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = new SqlConnection(datos.getruta());
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            //DEFINO EL COMANDO COMO TEXTO:
            cmd.CommandType = System.Data.CommandType.Text;
            //DEFINO LA SENTENCIA SQL:
            cmd.CommandText = "UPDATE alumnos SET estado = 1 WHERE tipodocumento = @tipodocumento AND documento = @documento";
            //DEFINO LOS PARÁMETROS:
            cmd.Parameters.AddWithValue("@tipodocumento", this.TipoDocumento);
            cmd.Parameters.AddWithValue("@documento", this.Documento);
            cmd.Connection = cn;
            //COMIENZA LA EJECUCIÓN DEL COMANDO:
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                activar = false;
            }
            finally
            {
                cn.Close();
            }
            return activar;
        }

        public bool Desactivar()
        {
            bool desactivar = true;
            Accesoadatos datos = new Accesoadatos();
            SqlConnection cn = new SqlConnection(datos.getruta());
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            //DEFINO EL COMANDO COMO TEXTO:
            cmd.CommandType = System.Data.CommandType.Text;
            //DEFINO LA SENTENCIA SQL:
            cmd.CommandText = "UPDATE alumnos SET estado = 0 WHERE tipodocumento = @tipodocumento AND documento = @documento";
            //DEFINO LOS PARÁMETROS:
            cmd.Parameters.AddWithValue("@tipodocumento", this.TipoDocumento);
            cmd.Parameters.AddWithValue("@documento", this.Documento);
            cmd.Connection = cn;
            //COMIENZA LA EJECUCIÓN DEL COMANDO:
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                desactivar = false;
            }
            finally
            {
                cn.Close();
            }
            return desactivar;
        }

    }//CIERRE CLASE ALUMNO
}//CIERRE NAMESPACE
    
